Repository navigation
research(ui): Node 夹具在 CI 的耗时分布 (#144) - #179
Conversation
…144 Adds a dispatch-only job that runs the exact node command sixty times sequentially and in twenty four-way concurrent batches, recording elapsed time and timeouts against the unchanged fixed 10s budget.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7f8221ff74
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| print(json.dumps(report)) | ||
| with open("node-contract-timing.json", "w", encoding="utf-8") as stream: | ||
| json.dump(report, stream, indent=2) | ||
| sys.exit(1 if report["sequential_timeouts"] or report["concurrent_timeouts"] else 0) |
There was a problem hiding this comment.
Reject failed fixture runs before accepting timing evidence
If the fixture exits nonzero without timing out, this job still succeeds and includes the failed invocation in its timing distribution. Executing the embedded Python with all 140 subprocess calls returning exit code 1 produces workflow exit code 0. Unlike test_production_js_native_contract, which asserts a zero return code, this diagnostic can therefore report ample timeout headroom while measuring assertion failures rather than completed workloads. Check every recorded return code and mark the diagnostic unsuccessful when any invocation fails, while retaining its evidence artifact. This also satisfies the repository requirement for correctness checks alongside performance claims.
AGENTS.md reference: AGENTS.md:L12-L12
Useful? React with 👍 / 👎.
| | 范围 | 结果与复现入口 | 可以支持的结论与限制 | | ||
| |---|---|---| | ||
| | 行存储封存与结构单一发布(#169 第二片) | [固定结果](../experiments/core/results/2026-10-29-sealed-row-storage/README.md)、[验证身份](../experiments/core/results/2026-10-29-sealed-row-storage/validation.json) | `Screen::lines/history` 私有,只读口 + 23 文件/363 处迁移;Find overlay 改文档 rank;默认 Release 构建 exit 0、核心 8/8、扩展快测 20/20、candidate 源 /W4 编译 0。无新 VT/重排行为;运行中跨重排 Search、Qt 与候选运行由宿主作业复核。 | | ||
| | Node 纯夹具在 CI 的耗时分布(#144 未闭) | [固定结果](research/ui/results/2026-10-29-node-contract-timing/README.md)、[验证身份](research/ui/results/2026-10-29-node-contract-timing/validation.json) | hosted windows-2025、Node v22.23.4:顺序 60 次 + 20×4 并发共 140 次、0 超时;warm ~63–78ms、冷启动 1.469s、并发最大 0.125s。10s 预算余量充足,两次 10s 失败不能用夹具成本解释;宿主停顿假设未复现,#144/#38 不关闭。 | |
There was a problem hiding this comment.
Correct the evidence links to point outside docs
Both new links resolve relative to docs/EVIDENCE.md, so they target docs/research/ui/results/..., whereas the committed results are under repository-root research/ui/results/.... Repository-wide path inspection and the reviewed commit's tree confirm that neither linked target exists. Prefix both paths with ../ so readers can reach the fixed results and validation record from the evidence index.
Useful? React with 👍 / 👎.
内容
为 #144 里可测的那一半补上数据:那条纯 Node 夹具在 hosted windows-2025 上到底要多久。
windows-2025-node-contract-timing:只跑node research/ui/test_raster_native_contract.js,顺序 60 次 + 20 批 × 4 并发(共 140 次),每次新进程、保留原 10 秒超时,记录耗时与超时并上传 JSON。research/ui/results/2026-10-29-node-contract-timing/(README + validation.json),EVIDENCE 增加一行。结果(run 40864960451,Node v22.23.4)
结论
10 秒预算相对 warm 耗时约 130 倍余量、相对冷启动约 7 倍;已记录的两次
timed out after 10 seconds(PR141、#178 push)不能用夹具计算成本解释,更像宿主级停顿,但本批在空闲镜像上无法复现。#144/#38 保持开放,未改夹具、未延长预算、未重跑原失败。Refs #144 #38